增加节点到现有网络
Table of Contents
启动 first-network
./byfn.sh -m generate ./byfn.sh -m up -s couchdb -t 10000000
启动成功后, 可能在浏览器中输入 http://localhost:5984/_utils/#database/mychannel_mycc/_all_docs 查看相关信息.
关于 couch 的配置信息, 在 docker-compose-couch.yaml 文件中.
cryptogen
cryptogen 工具可以自动生成一个 Peer 所需要的加密材料.
cryptogen extend
命令可以扩展现有的网络.
cryptogen extend
命令需要一个 crypto-config.yaml 作为其参数. 我们可以打开该文件, 修改其中一个组织, 将组织中的节点新增一个. 如图, 我们将 count 由 2 改成了 3.
保存该文件, 使用命令生成新 Peer 所需的加密材料:
../bin/cryptogen extend --config=./crypto-config.yaml
此时, 在 crypto-config/peerOrganizations/org2.example.com/peers 目录下, 可以看到新 Peer 的配置文件在这里, 即: peer2.org2.example.com
如果该文件夹, 则需要修改一下权限:
sudo chmod 755 -R ./crypto-config/peerOrganizations/org2.example.com/peers/
编写 docker-compose 文件
docker-compose-new-peer.yaml:
# Copyright IBM Corp. All Rights Reserved. # # SPDX-License-Identifier: Apache-2.0 # version: '2' networks: byfn: services: couchdb4: container_name: couchdb4 image: hyperledger/fabric-couchdb # Populate the COUCHDB_USER and COUCHDB_PASSWORD to set an admin user and password # for CouchDB. This will prevent CouchDB from operating in an "Admin Party" mode. environment: - COUCHDB_USER= - COUCHDB_PASSWORD= # Comment/Uncomment the port mapping if you want to hide/expose the CouchDB service, # for example map it to utilize Fauxton User Interface in dev environments. ports: - "9984:5984" networks: - byfn peer2.org2.example.com: container_name: peer2.org2.example.com extends: file: base/peer-base.yaml service: peer-base environment: - CORE_LEDGER_STATE_STATEDATABASE=CouchDB - CORE_LEDGER_STATE_COUCHDBCONFIG_COUCHDBADDRESS=couchdb4:5984 # The CORE_LEDGER_STATE_COUCHDBCONFIG_USERNAME and CORE_LEDGER_STATE_COUCHDBCONFIG_PASSWORD # provide the credentials for ledger to connect to CouchDB. The username and password must # match the username and password set for the associated CouchDB. - CORE_LEDGER_STATE_COUCHDBCONFIG_USERNAME= - CORE_LEDGER_STATE_COUCHDBCONFIG_PASSWORD= - CORE_PEER_ID=peer2.org2.example.com - CORE_PEER_ADDRESS=peer2.org2.example.com:7051 - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer2.org2.example.com:7051 - CORE_PEER_GOSSIP_BOOTSTRAP=peer1.org2.example.com:7051 - CORE_PEER_LOCALMSPID=Org2MSP volumes: - /var/run/:/host/var/run/ - ./crypto-config/peerOrganizations/org2.example.com/peers/peer2.org2.example.com/msp:/etc/hyperledger/fabric/msp - ./crypto-config/peerOrganizations/org2.example.com/peers/peer2.org2.example.com/tls:/etc/hyperledger/fabric/tls ports: - 11051:7051 - 11053:7053 depends_on: - couchdb4 networks: - byfn
启动容器:
docker-compose -f docker-compose-new-peer.yaml up -d docker ps # 可以看到 peer2 和 couchdb4 已经启动.
可以通过浏览器访问 http://localhost:9984/_utils/#database/mychannel_mycc/_all_docs 查看数据. 但是由于目前 Peer2 还未加入 mychannel, 因此没有数据.
将新 Peer 加入 mychannel
docker exec -it cli bash # 设置环境变量 export CHANNEL_NAME=mychannel CORE_PEER_LOCALMSPID="Org2MSP" CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp CORE_PEER_ADDRESS=peer2.org2.example.com:7051
加入 mychannel:
peer channel join -b mychannel.block
此时再访问 http://localhost:9984/_utils/#database/mychannel_mycc/_all_docs, 会发现已经有了数据, 说明区块已经同步到了新节点上.
Generated by Emacs 25.x(Org mode 8.x)
Copyright © 2014 - Pinvon - Powered by EGO